package br.com.dyad.commons.data.events;

import java.util.EventListener;
import java.util.List;

import br.com.dyad.commons.data.AppEntity;

/**
 * Inteface que observa o datalist. 
 * @author danilo sampaio
 *
 */
public interface DataListListener extends EventListener{
	/**
	 * Evento disparado antes do método DataList.setList(List list) ser executado.
	 * @param event
	 * @param list
	 */
	public void onBeforeSetList( DataListEvent event, List list );
	/**
	 * Evento disparado depois do método DataList.setList(List list) ser executado.
	 * @param event
	 * @param list
	 */
	public void onAfterSetList( DataListEvent event, List list );
	/**
	 * Evento disparado antes do método DataList.newEntity(String database, String beanName, Long licenseToCreateKey) ser executado.
	 * @param event
	 * @param baseEntity
	 */
	public void onBeforeNewEntity( DataListEvent event, AppEntity baseEntity );
	/**
	 * Evento disparado depois do método DataList.newEntity(String database, String beanName, Long licenseToCreateKey) ser executado.
	 * @param event
	 * @param baseEntity
	 */
	public void onAfterNewEntity( DataListEvent event, AppEntity baseEntity );
	/**
	 * Evento disparado antes do método DataList.delete(AppEntity object) ser executado.
	 * @param object
	 */
	public void onBeforeDeleteEntity( DataListEvent event, AppEntity entity );
	/**
	 * Evento disparado depois do método DataList.delete(AppEntity object) ser executado.
	 * @param object
	 */
	public void onAfterDeleteEntity( DataListEvent event, AppEntity entity );
	/**
	 * Evento disparado antes do método DataList.empty() ser executado.
	 */
	public void onBeforeEmpty(DataListEvent event);
	/**
	 * Evento disparado depois do método DataList.empty() ser executado
	 */
	public void onAfterEmpty(DataListEvent event);
	/**
	 * Evento disparado antes do método DataList.add() ser executado
	 */
	public void onBeforeAddEntityOnList( DataListEvent event, AppEntity appEntity );
	/**
	 * Evento disparado antes do método DataList.add() ser executado
	 */
	public void onAfterAddEntityOnList( DataListEvent event, AppEntity appEntity );
	/**
	 * Evento disparando depois da alteração de uma propriedade do bean
	 */
	public void onAfterChangeEntityProperty( EntityPropertyEvent event, String propertyName, Object value );
}
